'''
封装：
    目的是隐藏内部细节，只暴露必要的接口给外部使用，
    这样既可以减少外部对内部实现的依赖，也可以防止
    外部直接访问内部数据，从而保护数据的安全性和正确性。
面向对象有三大特征：封装 继承 多态
步骤：
     1）属性私有化，在类外面不能修改访问属性
     2）提供两个方法set/get来设置和获取属性

'''
class Pet:
    def __init__(self,type,age,health):
        self.__type = type
        self.__age= age
        self.__health= health

    # 设置类型
    def set_type(self,type):
        self.__type=type
    # 获取类型
    def get_type(self):
        return self.__type

    # 设置年龄
    def set_age(self,age):
        if age<0:
            self.__age = 0
        elif age>20:
            self.__age = 20
        else:
             self.__age=age

    def get_age(self):
        return self.__age

    def set_health(self,health):
        if health<0:
            self.__health = 0
        elif health>100:
            self.__health = 20
        else:
             self.__health=health

    def get_health(self):
        return self.__health



    def eat(self):
        print("-宠物吃---")



    def __str__(self):
        return f"Pet[type]={self.__type},[age]={self.__age},[health]={self.__health}"

cat = Pet("猫",1,20)
# cat.__health=-300
# cat.age=-3
cat.set_age(80)
print(cat)
print(cat.get_health())
